package com.ceuer.demo.thread;

//静态代理模式总结
//真实对象和代理对象都要实现同一个接口
//代理对象要代理真实角色

//好处
//1，代理对象可以做很多真实对象做不了的事情
//2，真是对象专注做自己的事情
public class StaticProxy {
	public static void main(String[] args) {
		new Company(new You()).start();
	}
}

interface Marry{
	void start();
}

class You implements Marry{
	@Override
	public void start() {
		System.out.println("我要结婚了，开心！");
	}
}

//代理角色
class Company implements Marry{
	//代理对象
	private Marry target;
	
	public Company(Marry target) {
		this.target = target;
	}
	
	@Override
	public void start() {
		before();
		this.target.start();//真实对象结婚
		after();
	}
	
	//结婚之前
	private void before() {
		System.out.println("布置结婚现场等");
	}
	
	//结婚之后
	private void after() {
		System.out.println("收取尾款！");
	}
	
}